package com.wb.core10异常.课程笔记;

/**
 * @author 黄衡熙
 * @version 1.0
 */
public class Teat02_异常的捕获 {
    public static void main(String[] args) {
        test01();
    }
    /**
     * 使用try-catch-finally语句处理异常
     */
    public static void test01() {
        try {
            System.out.println("可能出现异常的代码");
            int i = 1 / 0;
            // int i = 2 / 1;
            System.out.println("没有出现异常执行的代码");
        } catch (ArithmeticException e) {
            // 在catch中需要捕获的异常类型
            System.out.println("当遇到ArithmeticException异常时执行的代码");
            // 异常对象中包含了异常的详细信息
            // 打印堆栈中异常详细信息,通过单独的线程进行打印
            // System.err.println()
            // System.out.println("Hello World");
            // System.err.println("Hello Exception");
            // e.printStackTrace();
            // 获取异常信息
            System.out.println(e);
            // 获取异常信息的字符串
            System.out.println(e.getMessage());
            // 此处return虽然表示退出方法,但是try-catch-finally并没有退出
            // 此时return之后finally依然会执行,但是try-catch-finally后面的代码不会执行
            // return;
            // System.exit(0)表示终止当前正在运行的JVM。
            // 即:系统完全退出,此时finally不会执行
            System.exit(0);
        } finally {
            System.out.println("无论是否存在异常都必须执行的代码");
        }

        System.out.println("异常后面的代码,此处代码与异常无关");
    }
}
